#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;


//上面这种剑指offer里面的超时
// class Solution {
// public:
//     bool isUgly(int n) {
//         if(n<1){
//             return false;
//         }
//         if(n==1){
//             return true;
//         }
//         vector<int> dp(n+1);
//         int p1 = 1;
//         int p2 = 1;
//         int p3 = 1;
//         int i = 1;
//         dp[i] = 1;
//         while(true){
//             int nums1 = dp[p1]*2;
//             int nums2 = dp[p2]*3;
//             int nums3 = dp[p3]*5;
//             dp[++i] = min(min(nums1,nums2),nums3); //最小的丑数
//             if(dp[i]==n){
//                 return true;
//             }
//             if(dp[i]>n){
//                 return false;
//             }
//             if(dp[i]==nums1){
//                 p1++;
//             }
//             if(dp[i]==nums2){
//                 p2++;
//             }
//             if(dp[i]==nums3){
//                 p3++;
//             }
//         }
//         return false;
//     }
// };

class Solution {
public:
    bool isUgly(int n) {
        if(n<1){
            return false;
        }
        if(n==1){
            return true;
        }
        int curr = n;
        while((curr%2)==0||(curr%3==0)||(curr%5==0)){
            if(curr%5==0){
                curr = curr/5;
            }
            else if(curr%3==0){
                curr= curr/3;
            }
            else if(curr%2==0){
                curr = curr/2;
            }
            if(curr==1){
                return true;
            }
        }
        return false;
        
    }
};
int main(){
    Solution S;
    cout<<S.isUgly(214797179)<<endl;
}